//#include <iostream>
//using namespace std;
//
//const int N = 1e6 + 10;
//
//bool st[N] = { 0 };
//int p[N] = { 0 };
//int cnt = 0;
//
//void get_prime()
//{
//	for (int i = 2; i <= N; i++)
//	{
//		if (!st[i])
//		{
//			p[++cnt] = i;
//		}
//
//		for (int j = 1; 1ll * i * p[j] <= N; j++)
//		{
//			st[i * p[j]] = true;
//			if (i % p[j] == 0)
//			{
//				break;
//			}
//		}
//	}
//}
//
//int main()
//{
//	get_prime();
//
//	int x;
//	while (cin >> x, x)
//	{
//		for (int i = 1; i <= cnt; i++)
//		{
//			if (!st[x - p[i]])
//			{
//				printf("%d = %d + %d\n", x, p[i], x - p[i]);
//				break;
//			}
//		}
//	}
//
//
//	return 0;
//}

//
//#include <iostream>
//using namespace std;
//
//const int N = 1e4 + 10;
//
//int c[N] = { 0 };
//int n;
//
//void deprime(int x)
//{
//	for (int i = 2; i <= x / i; i++)
//	{
//		int cnt = 0;
//		while (x % i == 0)
//		{
//			x /= i;
//			cnt++;
//		}
//		c[i] += cnt;
//	}
//	if (x > 1)
//	{
//		c[x] += 1;
//	}
//}
//
//int main()
//{
//	cin >> n;
//	for (int i = 2; i <= n; i++)
//	{
//		deprime(i);
//	}
//
//	for (int i = 1; i <= n; i++)
//	{
//		if (c[i])
//		{
//			cout << i << " " << c[i] << endl;
//		}
//	}
//	return 0;
//}


//#include <iostream>
//using namespace std;
//
//typedef long long ll;
//
//const int N = 1e6 + 10;
//
//bool st[N] = { 0 };
//int p[N] = { 0 };
//int cnt = 0;
//
//int n;
//
//void get_prime()
//{
//	for (int i = 2; i <= n; i++)
//	{
//		if (!st[i])
//		{
//			p[++cnt] = i;
//		}
//
//		for (int j = 1; 1ll * i * p[j] <= n; j++)
//		{
//			st[i * p[j]] = true;
//			if (i % p[j] == 0)
//			{
//				break;
//			}
//		}
//	}
//}
//
//int main()
//{
//	cin >> n;
//	
//	get_prime();
//
//	for (int i = 1; i <= cnt; i++)
//	{
//		int s = 0;
//		for (ll j = p[i]; j <= n; j *= p[i])
//		{
//			s += n / j;
//		}
//		cout << p[i] << " " << s << endl;
//	}
//	
//	return 0;
//}

#include <iostream>
using namespace std;

typedef long long ll;

ll a, b, c;

ll qpow(ll a, ll b, ll c)
{
	ll ret = 1;
	while (b)
	{
		if (b & 1)
		{
			ret = ret * a % c;
		}
		a = a * a % c;
		b >>= 1;
	}

	return ret;
}

int main()
{
	cin >> a >> b >> c;
	printf("%lld^%lld mod %lld=%lld", a, b, c, qpow(a, b, c));

	return 0;
}